﻿namespace SharpCompress.Compressor.LZMA
{
    public class LzmaEncoderProperties
    {
        internal CoderPropID[] propIDs;
        internal object[] properties;

        public LzmaEncoderProperties()
            : this(false)
        {
        }

        public LzmaEncoderProperties(bool eos)
            : this(eos, 1 << 20)
        {
        }

        public LzmaEncoderProperties(bool eos, int dictionary)
            : this(eos, dictionary, 32)
        {
        }

        public LzmaEncoderProperties(bool eos, int dictionary, int numFastBytes)
        {
            int posStateBits = 2;
            int litContextBits = 3;
            int litPosBits = 0;
            int algorithm = 2;
            string mf = "bt4";

            propIDs = new CoderPropID[]
                          {
                              CoderPropID.DictionarySize,
                              CoderPropID.PosStateBits,
                              CoderPropID.LitContextBits,
                              CoderPropID.LitPosBits,
                              CoderPropID.Algorithm,
                              CoderPropID.NumFastBytes,
                              CoderPropID.MatchFinder,
                              CoderPropID.EndMarker
                          };
            properties = new object[]
                             {
                                 dictionary,
                                 posStateBits,
                                 litContextBits,
                                 litPosBits,
                                 algorithm,
                                 numFastBytes,
                                 mf,
                                 eos
                             };
        }
    }
}